using System;
using System.ComponentModel.DataAnnotations;

namespace AiPlatformAdmin.Api.DTOs;

public class LlmModelDto
{
    public int Id { get; set; }
    public string ModelId { get; set; } = string.Empty;
    public string Name { get; set; } = string.Empty;
    public string Provider { get; set; } = string.Empty;
    public string Category { get; set; } = string.Empty;
    public string? Endpoint { get; set; }
    public string? Description { get; set; }
    public bool IsEnabled { get; set; }
    public DateTime CreatedAt { get; set; }
    public DateTime? UpdatedAt { get; set; }
    public int TenantId { get; set; }
    public SimpleUserDto? CreatedBy { get; set; }
}

public class SimpleUserDto
{
    public int Id { get; set; }
    public string Username { get; set; } = string.Empty;
    public string Email { get; set; } = string.Empty;
}

public class CreateLlmModelDto
{
    [Required]
    [MaxLength(200)]
    public string ModelId { get; set; } = string.Empty;

    [Required]
    [MaxLength(200)]
    public string Name { get; set; } = string.Empty;

    [Required]
    [MaxLength(200)]
    public string Provider { get; set; } = string.Empty;

    [Required]
    public string Category { get; set; } = string.Empty;

    [Url]
    public string? Endpoint { get; set; }

    public string? AccessKey { get; set; }

    [MaxLength(500)]
    public string? Description { get; set; }

    public bool? IsEnabled { get; set; }
}

public class UpdateLlmModelDto
{
    [MaxLength(200)]
    public string? ModelId { get; set; }

    [MaxLength(200)]
    public string? Name { get; set; }

    [MaxLength(200)]
    public string? Provider { get; set; }

    public string? Category { get; set; }

    [Url]
    public string? Endpoint { get; set; }

    public string? AccessKey { get; set; }

    [MaxLength(500)]
    public string? Description { get; set; }

    public bool? IsEnabled { get; set; }
}

